﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ECOSYSTEM_BL;
using ECOSYSTEM_Dominio;

namespace ECOSYSTEMPRESENTACION
{
    public partial class frmVendedorProv : Form
    {
        public frmVendedorProv()
        {
            InitializeComponent();
        }
        VendedorProv elVendedor = new VendedorProv();
        VendedorProvBL elVededorProvBL = new VendedorProvBL();
        EmpresaProvedorBL laEmpresaProv = new EmpresaProvedorBL();

        private VendedorProv ObtenerObjeto() {
            elVendedor.NomVendProv = txtNomVended.Text;
            elVendedor.EmaiVendProv = txtMailVended.Text;
            elVendedor.TelCelVendProv = txtTelfCelVended.Text;
            elVendedor.RPM = txtRPMVended.Text;            
            if (cmbEstadoVended.SelectedIndex == 0)
            {
                //su estado es activo
                elVendedor.EstadoVendProv = 1;
            }
            else
            {
                //estado es desactivado
                elVendedor.EstadoVendProv = 0;
            }
            elVendedor.laEmpresa = guardarEmpresaProvedor();
            return elVendedor;
        }
        private Boolean GuardarVendedor() {
            VendedorProv elVendedor = ObtenerObjeto();
            elVededorProvBL.guardarVendedorProv(elVendedor);
            return true;
        }

        private VendedorProv ObtenerObjetoActualizar() {
            elVendedor.VendedorProvID = Convert.ToInt32(lblVendedorID.Text);
            elVendedor.NomVendProv = txtNomVended.Text;
            elVendedor.EmaiVendProv = txtMailVended.Text;
            elVendedor.TelCelVendProv = txtTelfCelVended.Text;
            elVendedor.RPM = txtRPMVended.Text;
            if (cmbEstadoVended.SelectedIndex == 0)
            {
                //su estado es activo
                elVendedor.EstadoVendProv = 1;
            }
            else
            {
                //estado es desactivado
                elVendedor.EstadoVendProv = 0;
            }
            elVendedor.laEmpresa = guardarEmpresaProvedor();
            return elVendedor;
        }
        private Boolean ActualizarVendedor() {
            VendedorProv elVendedor = ObtenerObjetoActualizar();
            if (txtNomVended.Text == lblNomNuevo.Text)
            {
                elVededorProvBL.ActualizarVendedorProv(elVendedor, "");
            }
            else {
                elVededorProvBL.ActualizarVendedorProv(elVendedor, txtNomVended.Text);
            }
            return true;
        }
        private void LlenarEmpresaProvedor() {
            if (cmbListaProvedor.DataSource == null) {
                cmbListaProvedor.DataSource = laEmpresaProv.ObtenerListaProvedor();
                cmbListaProvedor.DisplayMember = "RazonSocial";
                cmbListaProvedor.ValueMember = "EmpresaProvedorID";
            }
        }
        private void LlenarListaVendedor() {
            if (dgvListaProvedor.DataSource == null) {
                dgvListaProvedor.DataSource = elVededorProvBL.ObtenerVendedor();
            }
        }
        private void LlenarListaVendedorAll()
        {
            if (dgvListaProvedor.DataSource == null)
            {
                dgvListaProvedor.DataSource = elVededorProvBL.ObtenerVendedorAll();
            }
        }
        private Int32 guardarEmpresaProvedor() {
            Int32 id;
            if (cmbListaProvedor.SelectedValue == null)
            {
                id = laEmpresaProv.NuevaEmpresaProvedorID(cmbListaProvedor.Text.ToString().ToUpper(), "RUC PENDIENTE", dtpFecha.Text.ToString());
            }
            else {
                id = Convert.ToInt32(cmbListaProvedor.SelectedValue);
            }
            return id;
        }
        private void LimpiarCampos() {
            cmbListaProvedor.Text = "";
            txtNomVended.Text = "";
            txtTelfCelVended.Text = "";
            txtRPMVended.Text = "";
            txtMailVended.Text = "";
            txtSearchProv.Text = "";
            cmbEstadoVended.Text = "";
        }
        private int Filtrar_dgvListaProvedor(String columna, String texto, BindingSource filtro, DataGridView data)
        {
            if (bsFiltroVendedor.DataSource == null) { return 0; }
            try
            {
                String fila = String.Empty;
                fila = "LIKE '" + texto.Trim() + "%'";
                if (fila != String.Empty)
                {
                    fila = "[" + columna + "]" + fila;
                }
                filtro.Filter = fila;
                data.DataSource = filtro.DataSource;
                return filtro.Count;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return 0;
        }
        private void AplicarFiltro()
        {
            Int32 ret = Filtrar_dgvListaProvedor("Nombre", txtSearchProv.Text.Trim(), bsFiltroVendedor, dgvListaProvedor);
            if (ret == 0) { txtSearchProv.BackColor = Color.Red; }
            else { txtSearchProv.BackColor = Color.White; }
        }
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void rbNewVended_CheckedChanged(object sender, EventArgs e)
        {
            if (rbNewVended.Checked == true)
            {
                LlenarEmpresaProvedor();
                LimpiarCampos();
                cmbListaProvedor.Select();
                btnNewProv.Enabled = true;
                cmbEstadoVended.Enabled = false;
                dgvListaProvedor.DataSource = null;
            }
            else {
                btnNewProv.Enabled = false;
            }
        }

        private void rbUpdateVended_CheckedChanged(object sender, EventArgs e)
        {
            if (rbUpdateVended.Checked == true)
            {
                LimpiarCampos();
                txtSearchProv.Select();
                bsFiltroVendedor.DataSource = elVededorProvBL.ObtenerVendedor();
                LlenarListaVendedor();
                btnUpdateProv.Enabled = true;
            }
            else {
                btnUpdateProv.Enabled = false;
            }
        }

        private void frmVendedorProv_Load(object sender, EventArgs e)
        {            
            rbNewVended.Checked = true;
            cmbEstadoVended.SelectedIndex = 0;
        } 
        private void txtSearchProv_TextChanged(object sender, EventArgs e)
        {
            AplicarFiltro();
        }

        private void btnNewProv_Click(object sender, EventArgs e)
        {
            try
            {
                GuardarVendedor();
                MessageBox.Show("Vendedor Registrado "+txtNomVended.Text+" Correctamente");
                LimpiarCampos();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnUpdateProv_Click(object sender, EventArgs e)
        {
            try
            {
                ActualizarVendedor();
                MessageBox.Show("Vendedor " + txtNomVended.Text + " Actualizado Correctamente");
                LimpiarCampos();
                if (cbAllVendedor.Checked == true) {
                    cbAllVendedor.Checked = false;
                }
                dgvListaProvedor.DataSource = null;
                rbUpdateVended.Checked = false;
                rbNewVended.Checked = true;
                
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void dgvListaProvedor_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                Int32 nroFila = Int32.Parse(e.RowIndex.ToString());
                cmbListaProvedor.SelectedValue = Convert.ToString(dgvListaProvedor["EmpresaProvedorID", nroFila].Value);
                txtNomVended.Text = Convert.ToString(dgvListaProvedor["Nombre", nroFila].Value);
                lblNomNuevo.Text = Convert.ToString(dgvListaProvedor["Nombre", nroFila].Value);
                txtTelfCelVended.Text = Convert.ToString(dgvListaProvedor["TeleCelu", nroFila].Value);
                txtRPMVended.Text = Convert.ToString(dgvListaProvedor["Rpm", nroFila].Value);
                txtMailVended.Text = Convert.ToString(dgvListaProvedor["Email", nroFila].Value);
                cmbEstadoVended.Enabled = true;
                if (Convert.ToInt32(dgvListaProvedor["Estado", nroFila].Value) == 1)
                {
                    cmbEstadoVended.SelectedIndex = 0;
                }
                else { cmbEstadoVended.SelectedIndex = 1; }
                lblVendedorID.Text = Convert.ToString(dgvListaProvedor["VendedorID", nroFila].Value);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void cbAllVendedor_CheckedChanged(object sender, EventArgs e)
        {
            if (cbAllVendedor.Checked == true)
            {
                dgvListaProvedor.DataSource = null;
                bsFiltroVendedor.DataSource = elVededorProvBL.ObtenerVendedorAll();
                LlenarListaVendedorAll();
                txtSearchProv.Select();
            }
            else {
                dgvListaProvedor.DataSource = null;
                bsFiltroVendedor.DataSource = elVededorProvBL.ObtenerVendedor();
                LlenarListaVendedor();
                txtSearchProv.Select();
                LimpiarCampos();
            }
        }
    }
}
